Development of computer software, especially complex software, requires collaboration of designers and programmers. Once a program version is developed, it is often required to modify it. In particular, it is often required to modify a generic software application to tailor it to the needs of a particular entity. Where software, such as Enterprise Resource Planning (ERP) software, is developed for large entities, each group may include a large number of people assigned different tasks. For example, the designers may include a business model design team and software design team. The software design team may create software specifications for modeling a software process satisfying the identified business needs. Further, different sub-groups may be assigned to different aspects of business model and software specification development, which are then to be consolidated to create the software specifications to be passed on to the programmers. The programmers, too, may be assigned to the coding of different software parts to be used in concert.
The specifications for software development are therefore often disorganized. Additionally, the specifications are often based on the software designers' mental conceptualizations of the software modifications. Actual modifications may therefore be different than expected by the software designers, requiring another iteration of specifications development and software modification.
Additionally, the software coding for implementation of the specification often falls short of the specifications provided to the programmers. Testing is therefore required for ensuring that the programmed software application matches the specifications. This includes a potentially lengthy task of manual testing by domain experts to ensure that the programmed software complies with the expected application behavior as defined by the specifications.
The procedure is prone to error, with respect to the software designers' understanding of the business model designers' requirements, the software designers' conceptualization of the application behavior according to their specifications, the programmers' understanding of the expected application behavior as set forth in the specifications, and the testing of the coded software.
The software development procedure may therefore require numerous iterations and cost an enormous amount, with respect to both time and money.
Furthermore, for implementation of software, users are trained in their use. Such training often requires simulations of an actual use of the software. However, a simulation may become outdated in view of software modifications implemented subsequent to creation of the simulation. It is therefore required to modify the simulation, which requires determination of how the modifications affect the simulation, or to create an entirely new software simulation.
Accordingly, there is a need in the art for a system and method for increasing efficiency of software development and modification with respect to developer and tester time, and for streamlining the interaction of the various contributors of the software development, and there is a need in the art for a system and method for streamlining software modification with training simulation updates.